package com.edu.mapper;

import com.edu.bean.User;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface UserMapper {



    User selectUserByUserName(String username);

    //查询 一个指定id的用户的 某一个 指定的属性值.
    /*
    *       动态列
    * */

    String selectSomething(String columnName);


    //1 参数 是 一个 简单型(数字 字符串 布尔型 字符。。)
//    User selectUserById(int userId);
    User selectUserById(@Param("uId") int userId);


    /*
    *  2 参数 是一个对象时
    *           配置文件中 只能 直接使用 这个对象的属性名
    * */
//    int insertUser(User user);
      int insertUser(@Param("u") User user);

      /*
      *     3 当参数 基本型时
      *         1. 通过 #{arg0,arg1}  #{param1,param2}
      * */
      User selectUser(@Param("username")String xiancai,@Param("password") String luob);

      /*
      *     4 当参数是对象和基本型的组合时
      *         查询 xxx-xxx岁之间的 xx性别的用户(用户性别 放到 user对象中 传过来)
      * */
      List<User> selectUser2(@Param("user")User user,@Param("minAge")int minAge,@Param("maxAge") int maxAge);

      /*
      *     5 参数为 数组时
      *         查询年龄是xxx岁或者xxx岁或者xxx岁的用户
      * */
      List<User> selectUser3(@Param("ages") int[] ages);


    /*
     *     6 参数为 集合时
     *         查询年龄是xxx岁或者xxx岁或者xxx岁的用户
     * */
    List<User> selectUser4(@Param("ages")List<Integer> ages);

    /*
    *      7。参数为 map集合时
    *           查询 性别为xxx 且年龄在xxx-xxx之间的用户
    * */
    List<User> selectUser5(@Param("params")Map<String,Object> params);


    /*
    *   生日在xxx时间-xxx时间的用户
    * */
    List<User> selectUser6(Date date1, Date date2);
}
